History of ViewS:

 ViewS V1.96
~~~~~~~~~~~~~
 * (29.4.97) The SAVE-FUNCTION remembers char- and attrib-tables now.
	     (I know, it should have been there just from the beginning...
	      but until I'm obviously the onlyone to use ViewS..., I really
	      don't know why I'm writing this... oh my god, I'm talking
	      to myself again !! ;-)


(V1.95 was skipped, to keep ViewS out of this shit ...95 trend ;-> )
(Hiroshima 45, Tschernobyl 86, Windows 95 ;)


 ViewS V1.94	(2.4.97)
~~~~~~~~~~~~~
 * (1.8.96)  corrected commandlineoption /W bug
             (/W- didn't turn wrapping off, when wordwrap was enabled)
 * (15.8.96) press <SHIFT> while scrolling vertically, for doubled speed


 ViewS V1.93   (3.6.96)
~~~~~~~~~~~~~
 * added function to extract parts of the file
   ( New keys:
         -  <Enter>     : switch selection-bar on/off
         -  <Space>     : toggle selection of currently focused line
         -  <Ctrl>-<Del>: clear all selections
         -  <Shift>-<W> : write all selected lines into a file

     New commandline-option:
         -  /S[+|*]<filename>   : write selected line into file <filename>
                                  automatically at exit
   )

 * added VTXT2EXE - an text_to_executable-"compiler", which makes
   textfiles selfexecutable, based on a smaller version of ViewS (features
   basic functions only)

 * ok, I must confess: the search-function *had* still another bug:
    Searchstrings in wrapped lines were highlighted wrong!
   -> just fixed... should be ok now.

 * again changed the wait-function (for beeps). It uses the PIT-Channel0 now,
   which should be more exact and stable than the VRetrace (which depended on
   screen-frequency and desktop-environments (as O*/2 or Windoze)).

 * fixed a little problem with the save-function

 * fixed a little keyboard-handler-bug

 * some internal changes



 ViewS V1.92   (11.4.96)   (not the final version ;)
~~~~~~~~~~~~~
 * added Grab-Search-String function (<G>)
    Now you can grap any string from the current screen for searching.
    (Use the cursor-keys for moving the selection around, and <Shift>-
     <Left>/<Right> for changing the size of the selection.
     Confirm with <Enter> or abort with <Esc>.

     After confirming the selection, the selected string will be taken
     as the searchstring. Search for it with <N> or edit and search with
     [<Shift>-] <S>.
    )

 * removed "NumLock-Searchstring-Selection" (it was crap)

 * interrupts are locked now during the critically timed scrolling-parts

    Previous versions of ViewS began to flicker while scrolling, when
    some "heavy" programs (like MOD-Players and so on) ran in background (may
    be as TSRs or in multitaskers...)

    This should fix that problem. (Don't dare to flicker again, you shitty
                                   piece of code... ;-> )
    (Ah, now even the timeshare works w/ CubicPlayer in the background  ;-)

    Oh btw, this could probably cause a problem with such fake multitaskers
    as Winshit 3.1! AFAIK they sometimes get problems, when interrupts are
    locked.
    So you can deny the int.-lock by setting [NoCLI] (in VIEWS.CFG) to ON.


   __About one hour later...__ (5:15 in the morning)

     Sorry, but I've just found another problem: Although ViewS runs smooth
     now, the backgroundtask is radically slowed down by this fix.
     This is a big problem for moduleplayers. The sound plays more slowly and
     stops sometimes. (See below "Timingproblems" for an explanation).

     I had to introduce another option, to avoid this new problem.
     If you realize problems with background-soundplayers, try to lower or
     raise the value [DelayCLI] (in VIEWSCFG).

 * yeah, I found some bugs in the search-function
    Didn't fixed them up to now...


 ViewS V1.9  (around 6.3.96)  (maybe the final version...)
~~~~~~~~~~~
 * added WordWrap, where a word will be completely put to the next line, if
   it exceeds the current wrapwidth (linewidth) instead of breaking the word
   to the next line.
   (key: <W>) (in VIEWS.CFG: [Wrap] Word )
 * added keyfunction <Shift>-<S> for case-sensitive search
 * added Filtered textmode (<Alt>-<F>), where all ASCIIs below 32 is
   filtered out
 * added Char-conversion-tables
     + [ChrTab] and [DefChrTab] in VIEWS.CFG
     + <C>, <Shift>-<C>, <Ctrl>-<C> in ViewS
     + commandline-option /C<TableName>
 * added color-attribute tables (color-highlighting)
     + [AttrTab] and [DefAttrTab] in VIEWS.CFG
     + <A>, <Shift>-<A> and <Ctrl>-<A> in ViewS
     + commandline-option /A<TableName>
 * added selection of search-strings (words) directly from the screen.
   (keys: <Num> and NumPad-<CursorKeys>)
 * added possibility for scrolling the screen "below 0".
   (key: <Scroll-Lock>) (in VIEWS.CFG: [ScrollLock])
 * added <Ctrl>-<Home> for resetting horizontal position to 0.
 * analog (vertical) mouse-mode got a little bit finer
    (begins now with speed 0.5 instead of speed 1)

 * added videomodes with any number of lines from 10 to 61.
 * added videomode with 90 columns
     (+ keys <Alt>-<9> and <Alt>-<8>)
 * added <Shift>-<Alt>-<M> for choosing the previous screenmode
 * added <Ctrl>-<M> for choosing screenmode from a list
 * changed [VideoMode] entry in VIEWS.CFG. Now it can be:
     L<n>   - <n> in [10..61] - for setting number of lines   (e.g. L25)
  or
     C<n>   - <n> is 80 or 90 - for setting number of columns (e.g. C80)
  or
    <n>X<m> - <n> is 80 or 90/ <m> in [10..61] - for setting number of columns
              and number of lines (e.g. 90x61)


 * added <Ctrl>-<F> for a list of all files saved in savefile
 * removed [SavChkNoDir] from VIEWS.CFG
 * added <Ctrl>-<F3> to load any stored position from savefile
 * added <Ctrl>-<F8> to remove any stored position from savefile

 * added selection of current screen-refresh-frequency
   (out of 4 internal VGA-frequencies)
    + [ScrFreq] in VIEWS.CFG
    + <Ctrl>-<Alt>-<S> in ViewS

 * removed a bug which caused some errors when counting wrapped lines
 * mouse-position will be restored correctly at exit now
 * the wait-function (for the beeps) now uses the horizontal-retrace-flag
   of the VGA-card for timing, instead of INT 15h/AH=86h
   (This should avoid the problems of some DX2-systems with buggy INT15h-BIOS-
    function...)

 * search-routine now 50% faster
 * endsearch-rountine now 35% faster

 * added Sw(i)tch

 * changed some internal stuff...
 * creatively introduced some more bugs ;)

 (hmm, did I forget something ???)


 ViewS V1.86
~~~~~~~~~~~~~
 internal...



 ViewS V1.85
~~~~~~~~~~~~~
 First release...

--------------------------------------------------
   ("Timingproblems" (I promised it ;->):
     You know, that a *smooth* scrolling requires, that all screenchanges are
     made during the vertical retrace. Now there is the typical loop, where
     you wait for it, by watching the VRetrace-Flag.
     Now it can happen (and it does so very often), that the background-
     task takes control just before the VRetrace begins and holds the loop
     some cycles while the VRetrace is already over.
     So the wait-loop doesn't realize the VRetrace and waits one full frame
     until the changes can be done.
     The result is the heavy flicker known from earlier ViewS-versions.

     Now you think, the solution is easy. Use a CLI to avoid, that the back-
     groundtask takes control while you are watching the VRetrace-Flag.
     That's just what I made one hour before.

     Here comes the new problem: ViewS is that fast (he he ;), that it only
     needs around 1% to 5% of a frame (on my AMD486-120) to do all the work.
     The remainder is spent in the loop waiting for the VRetrace to happen.
     All over this "rest" the interrupts will be locked; the background-task
     will be disabled.
     Now imagine that the background-task gets only 1-5% of the time and you
     can imagine the slowdown (of the music).

     The solution for this, is to slowdown ViewS that way, that the waiting-
     loop (where the interrupts are locked) will get less time.
     So I simply put another loop in front of the VRetrace-Wait, and wait a
     bit (about 70% of a frame), while the background-task can do it's job.
     Of course I used the PIT-channel #0 to get software-independed.

     Actually this loop should work fine on any system. But inhomogen timing
     of background-task and different system-speeds can still cause slowdowns
     or flickers.


     So I put the DelayCLI-value in the config-file so that you can adjust
     the length of the "front"-loop.
     But unfortunately there is no "best" value for it.
     If it is to low, the background-task won't get enough time.
     If it is to high, ViewS can miss the VRetrace, so that the scrolling
     will flicker and the background-task is delayed again.

     Uhh, problems over problems... bye.
    )


Bye
	TW.